package main

import "fmt"

func printArray(myA []string) {
	// 引用传递
	// _ 表示匿名的变量
	for _, value := range myA {
		fmt.Println(value)
	}
	myA[1] = "1111"
}

func arrayMake() {
	//声明slice1是一个切片，并且初始化，默认值是1，2，3。 长度len是3
	//slice1 := []int{1, 2, 3}
	//声明slice1是一个切片，但是并没有给slice分配空间
	//var slice1 []int
	//slice1 = make([]int, 3) // 开辟3个空间，默认值为0
	//声明slice1是一个切片，同时给slice分配空间，3个空间，初始化值是0
	//var slice1 []int = make([]int, 3)
	//声明slice1是一个切片，同时给slice分配空间，3个空间，初始化值是0, 通过:=推导出slice是一个切片
	slice1 := make([]int, 3)
	fmt.Printf("len = %d, slice = %v\n", len(slice1), slice1)

}

func arrayAppend() {
	nums := make([]int, 3, 5)
	// 添加操作
	nums = append(nums, 3, 3, 3, 3, 3)
	fmt.Println(nums, len(nums), cap(nums))
	// 向一个容量cap 已经满的追加元素 生成一个新的cap 容量 *2
	nums = append(nums, 3, 4, 56)
	fmt.Println(nums, len(nums), cap(nums))
}
func main() {
	marry := []string{"a", "c", "aaa"} // 动态数组， 切片 slice
	printArray(marry)
	fmt.Println(marry)
	arrayMake()
	arrayAppend()
}
